package com.taxi.driver.module.vo;

import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.amap.api.maps.model.LatLng;
import com.qianxx.utils.DateUtil;
import com.taxi.driver.data.entity.OrderCostItemEntity;
import com.taxi.driver.data.entity.OrderEntity;

import java.text.DecimalFormat;
import java.util.Date;
import java.util.List;

/**
 * 功能描述：UI层使用的订单数据模型
 */
public class OrderVO {

    public static OrderVO createFrom(OrderEntity entity) {
        if (entity == null) return new OrderVO();
        String strJson = JSON.toJSONString(entity);
        return JSON.parseObject(strJson, OrderVO.class);
    }

    public String uuid;
    public Integer subStatus;
    public String passengerCom;
    public String driverCom;
    public String originDetailAddress;
    public String originAddress;
    public Double originLng;
    public Double originLat;
    public String destDetailAddress;
    public String destAddress;
    public Double destLng;
    public Double destLat;
    public Integer typeTime;
    public Integer typeTrip;
    public Double totalFare;
    public Long deparTime;
    public String actualPasNum;
    public String actualPasMob;
    public PassengerVO passenger;
    public DriverVO driver;
    public String comment;
    public Double tip;
    public String remark;
    public String report;
    public String income;
    public String orderCount;
    public List<OrderCostItemEntity> orderCostItemBean;

    public Integer mainStatus;
    public Integer canPickUp;
    public Integer canHurryPay;
    public String title;
    public String orderNo;
    public String planTrip;

    // 订单模块类型（1：出租车，2：专车，3：拼车，4：快车，5：货的，6：骑手，7：搬家）
    public Integer typeModule;
    // 订单行程类型（1：用车，2：日租，3：半日租，4：送机，5：接机）
    public Integer typeTripNew;
    // 订单时效类型（1：实时，2：预约）
    public Integer typeTimeNew;
    // 订单交互类型（1：推单，2：抢单）
    public int typeInteractive;

    /**
     * 获取出发地坐标
     *
     * @return
     */
    public LatLng getOriginLatLng() {
        if (originLat == null || originLng == null
                || originLat <= 0 || originLng <= 0) {
            return null;
        }
        return new LatLng(originLat, originLng);
    }

    /**
     * 获取目的地坐标
     *
     * @return
     */
    public LatLng getDestLatLng() {
        if (destLat == null || destLng == null
                || destLat <= 0 || destLng <= 0) {
            return null;
        }
        return new LatLng(destLat, destLng);
    }

    /**
     * 获取乘客编号
     *
     * @return
     */
    public String getPassengerUuid() {
        if (passenger == null) return "";
        return passenger.uuid;
    }

    /**
     * 获取乘客的联系电话
     *
     * @return
     */
    public String getPassengerPhone() {
        if (passenger == null) return "";
        return passenger.mobile;
    }

    /**
     * 获取乘客尾号(4位)
     *
     * @return
     */
    public String getPassengerPhoneEnd() {
        if (passenger == null) return "";
        return passenger.getPassengerPhoneEnd();
    }

    /**
     * 获取换乘车人的联系电话
     *
     * @return
     */
    public String getActualPasMob() {
        if (actualPasMob == null) return "";
        return actualPasMob;
    }

    /**
     * 获取换乘车人尾号(4位)
     *
     * @return
     */
    public String getActualPasMobEnd() {
        if (actualPasMob == null) return "";
        if (actualPasMob.length() <= 4) return actualPasMob;
        return actualPasMob.substring(actualPasMob.length() - 4, actualPasMob.length());
    }

    /**
     * 获取调度费
     *
     * @return
     */
    public String getStrTip() {
        if (tip == null || tip <= 0) return "";
        return "" + new DecimalFormat("#.##").format(tip);
    }

    /**
     * 出发时间：xx月xx日 xx:xx
     *
     * @return
     */
    public String getStrDepartTime() {
        if (deparTime == null || deparTime <= 0) return "未知";
        return DateUtil.formatDate(new Date(deparTime), "MM月dd日 HH:mm");
    }

    public String getPhoneTail() {
        if (!TextUtils.isEmpty(actualPasMob))
            return "尾号" + getActualPasMobEnd();//换乘车人电话
        else
            return "尾号" + getPassengerPhoneEnd();//发单人电话
    }
}
